<?php
namespace app\run\controller;

use app\common\controller\Run;
use think\Db;

class Kf extends Run
{
    /**
    * 初始化 需要调父级方法
    */
    public function initialize()
    {
        //后台中允许不登录操作的方法
        helper('Auth')->allow(['apigettask']);
        call_user_func(['parent', __FUNCTION__]); 
    }
    
    /**
    * 列表 
    */
    public function lists()
    {
        // 搜索字段

        $this->local['filter'] = [
            'kfname',
            'kfgl_id'
        ];
        
        // 列表字段
        $this->local['list_fields'] = [
            'id',
            'kfname',
            'kfgl_id',
            'tasktgroup_id',
            'strattime',
            'stoptime'
            // 其他列表字段
        ];
        
        // 添加额外条件
        //$this->local['where'][] = ['字段', '=', '值'];
        //正向排序
        $this->local['order']['id'] = 'ASC';
        call_user_func(['parent', __FUNCTION__]);
    }
    
    /**
    * 添加
    */
    public function create()
    {   // 设置默认值
        //$this->assignDefault('字段名', '默认值');
        // 字段白名单
        //$this->local['whiteList'] = ['id', 'title', ...允许添加的字段列表];
        call_user_func(['parent', __FUNCTION__]);
    }
    
    /**
    * 修改
    */
    public function modify()
    {   
        // 字段白名单
        //$this->local['whiteList'] = ['id', 'title', ...允许修改的字段列表];
        call_user_func(['parent', __FUNCTION__]);
    } 
    
    /**
    * 删除
    */
    public function delete()
    {   
        // 设置额外的删除条件
        //$this->local['where'][] = ['is_verify', '=', 0];
        call_user_func(['parent', __FUNCTION__]);
    }

    function calledll()
    {
        $ret=call_dll('EDLL.DLL','phptest','phpcalltest');
        echo $ret;
    }

    /*
     * 调用地址:http://ip/run/Kf/apigettask?name=test2
     * 参数    ：name 为客服的编号或者名称
     * 参数    ：type 为获取手机或PC端任务 提交type=pc为电脑端,不提交为手机端
     * 返回值  : error,code:1 表示没有提供 name 参数
     *           error,code:2 表示客服没有任务
     *         注:以下返回在任务开始时间和结束时间内的对应任务
     *           -1,-1,-1|error,code:4,PC TASK 表示 客服没转发任务同时没拉人入群任务
     *          error,code:3,PHOME TASK        表示 客服没有手机对应任务
     */
    public function apigettask()
    {
        $getargs=$this->args;
        if(empty($this->args) || $getargs['name']==''){
            echo "error,code:1";
            return;
        }
        $name=$this->args['name'];
        $type=$this->args['type'];
//        $arr= $this->mdl
//            ->where('kfname',$name)
//            ->find();
        $this->loadModel('Kf');
        $with = [
            'Kfgl' => [
                'field' => ['wxid']
            ],
        ];
        $with = $this->Kf->parseWith($with);
        $list = $this->Kf->where('kfname',$name)->with($with)->find();
        if(empty($list)){
            echo "error,code:2";
            return;
        }
        $taskgroupid=$list['tasktgroup_id'];
        $nowtime=intval(date('H'));
        if($nowtime==0){
            $nowtime=24;
        }
        if($type=='pc'){
            //如果是PC端的任务 那么 返回转发开始时间，结束时间及消息接收WXID
            $strattime=$list['strattime'];
            $stoptime=$list['stoptime'];
            $sendid=$list['Kfgl']['wxid'];
            //要在任务的执行时间内才返回给客户端
            if($nowtime>=intval($strattime) && $nowtime<intval($stoptime)){
                $kfret=$strattime.','.$stoptime.','.$sendid;
            }else{
                $kfret='-1,-1,-1';
                //echo "error,code:3,PC";
            }
            //获取消息转发 接收端的WXID
            $pctask=Db('task')
                ->where('jobtype','1')
                ->where('tasktgroup_id',$taskgroupid)
                ->select();
            $count=count($pctask);
            $pctaskstr='';
            for($x=0; $x<$count; $x++) {
                $strattime=$pctask[$x]['strattime'];
                $stoptime=$pctask[$x]['stoptime'];
                if($nowtime>=intval($strattime) && $nowtime<intval($stoptime)){
                    //使用 IMPLODE 把数组转成文本
                    $pctaskstr=$pctaskstr.'|'.implode('#', $pctask[$x]);
                }
            }
            if($pctaskstr<>''){
                echo $kfret.$pctaskstr;
            }else{
                echo $kfret."|error,code:4,PC Task";
            }
            //var_dump($pctask);
        }else{
            //手机端任务列表
            $phonetask=Db('task')
                ->where('jobtype','0')
                ->where('tasktgroup_id',$taskgroupid)
                ->select();
            $count=count($phonetask);
            $phonetaskstr='';
            for($x=0; $x<$count; $x++) {
                $typepyq=$phonetask[$x]['imggroup_id'];
                $strattime=$phonetask[$x]['strattime'];
                $stoptime=$phonetask[$x]['stoptime'];
                //要在任务的执行时间内才返回给客户端
                if($nowtime>=intval($strattime) && $nowtime<intval($stoptime)){
                    $phonetaskstr=$phonetaskstr.'|'.implode('#', $phonetask[$x]);
                    //2018/10/02 通过手机插件可以一键转发,没必要提供下载
                    //如果设置了图片列表ID 就获取图片的地址
                    //     if(intval($typepyq)>=1){
                    //         $pyqimgs =Db('imggroup')
                    //            ->where('id',$typepyq)
                    //           ->field('image1,image2,image3,image4,image5,image6,image7,image8,image9')
                    //           ->find();
                    //       $phonetaskstr=$phonetaskstr.'|'.implode('#', $phonetask[$x]).'#'.implode('#', $pyqimgs);
                    //   }else{
                    //       $phonetaskstr=$phonetaskstr.'|'.implode('#', $phonetask[$x]);
                    //    }
                }
            }
            if($phonetaskstr<>''){
                echo substr($phonetaskstr,1);
            }else{
                echo "error,code:3,Phone Task";
            }
        }
    }
}
